﻿#pragma once

#include "../../Server/MirEnvir/Envir.h"
#include <any>

using namespace Server::MirDatabase;
using namespace Server::MirEnvir;

namespace Server
{
    class DragonInfoForm : public System::Windows::Forms::Form
    {
    public:
        virtual ~DragonInfoForm()
        {
            delete components;
            delete EnableDragonCheckBox;
            delete tabControl1;
            delete tabPage1;
            delete label1;
            delete MapFileNameTextBox;
            delete panel2;
            delete DropAreaBottomYTextBox;
            delete label15;
            delete DropAreaBottomXTextBox;
            delete label16;
            delete DropAreaTopYTextBox;
            delete label11;
            delete label12;
            delete label10;
            delete DropAreaTopXTextBox;
            delete label14;
            delete label13;
            delete label2;
            delete panel1;
            delete label9;
            delete label8;
            delete label7;
            delete label6;
            delete XTextBox;
            delete label5;
            delete label3;
            delete BodyNameTextBox;
            delete YTextBox;
            delete label4;
            delete MonsterNameTextBox;
            delete tabPage2;
            delete label23;
            delete label17;
            delete Level6ExpTextBox;
            delete Level12ExpTextBox;
            delete Level7ExpTextBox;
            delete Level5ExpTextBox;
            delete Level11ExpTextBox;
            delete Level1ExpTextBox;
            delete Level8ExpTextBox;
            delete Level2ExpTextBox;
            delete Level4ExpTextBox;
            delete Level10ExpTextBox;
            delete Level9ExpTextBox;
            delete Level3ExpTextBox;
            delete label22;
            delete label21;
            delete label24;
            delete label28;
            delete label20;
            delete label25;
            delete label27;
            delete label18;
            delete label19;
            delete label26;
        }

        Server::MirEnvir::Envir *getEnvir() const;

        DragonInfoForm();

    private:
        void UpdateInterface();

        void DragonInfoForm_Load(std::any sender, EventArgs *e);

        void MapFileNameTextBox_TextChanged(std::any sender, EventArgs *e);

        void XTextBox_TextChanged(std::any sender, EventArgs *e);

        void YTextBox_TextChanged(std::any sender, EventArgs *e);

        void MonsterNameTextBox_TextChanged(std::any sender, EventArgs *e);

        void BodyNameTextBox_TextChanged(std::any sender, EventArgs *e);

        void DragonInfoForm_FormClosed(std::any sender, FormClosedEventArgs *e);

        void EnableDragonCheckBox_CheckStateChanged(std::any sender, EventArgs *e);

        void DropAreaTopXTextBox_TextChanged(std::any sender, EventArgs *e);

        void DropAreaTopYTextBox_TextChanged(std::any sender, EventArgs *e);

        void DropAreaBottomXTextBox_TextChanged(std::any sender, EventArgs *e);

        void DropAreaBottomYTextBox_TextChanged(std::any sender, EventArgs *e);

        void Level1ExpTextBox_TextChanged(std::any sender, EventArgs *e);


        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::IContainer *components = nullptr;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected:
        void Dispose(bool disposing) override;

        #pragma region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
    private:
        void InitializeComponent();

        #pragma endregion

        System::Windows::Forms::CheckBox *EnableDragonCheckBox;
        System::Windows::Forms::TabControl *tabControl1;
        System::Windows::Forms::TabPage *tabPage1;
        System::Windows::Forms::Label *label1;
        System::Windows::Forms::TextBox *MapFileNameTextBox;
        System::Windows::Forms::Panel *panel2;
        System::Windows::Forms::TextBox *DropAreaBottomYTextBox;
        System::Windows::Forms::Label *label15;
        System::Windows::Forms::TextBox *DropAreaBottomXTextBox;
        System::Windows::Forms::Label *label16;
        System::Windows::Forms::TextBox *DropAreaTopYTextBox;
        System::Windows::Forms::Label *label11;
        System::Windows::Forms::Label *label12;
        System::Windows::Forms::Label *label10;
        System::Windows::Forms::TextBox *DropAreaTopXTextBox;
        System::Windows::Forms::Label *label14;
        System::Windows::Forms::Label *label13;
        System::Windows::Forms::Label *label2;
        System::Windows::Forms::Panel *panel1;
        System::Windows::Forms::Label *label9;
        System::Windows::Forms::Label *label8;
        System::Windows::Forms::Label *label7;
        System::Windows::Forms::Label *label6;
        System::Windows::Forms::TextBox *XTextBox;
        System::Windows::Forms::Label *label5;
        System::Windows::Forms::Label *label3;
        System::Windows::Forms::TextBox *BodyNameTextBox;
        System::Windows::Forms::TextBox *YTextBox;
        System::Windows::Forms::Label *label4;
        System::Windows::Forms::TextBox *MonsterNameTextBox;
        System::Windows::Forms::TabPage *tabPage2;
        System::Windows::Forms::Label *label23;
        System::Windows::Forms::Label *label17;
        System::Windows::Forms::TextBox *Level6ExpTextBox;
        System::Windows::Forms::TextBox *Level12ExpTextBox;
        System::Windows::Forms::TextBox *Level7ExpTextBox;
        System::Windows::Forms::TextBox *Level5ExpTextBox;
        System::Windows::Forms::TextBox *Level11ExpTextBox;
        System::Windows::Forms::TextBox *Level1ExpTextBox;
        System::Windows::Forms::TextBox *Level8ExpTextBox;
        System::Windows::Forms::TextBox *Level2ExpTextBox;
        System::Windows::Forms::TextBox *Level4ExpTextBox;
        System::Windows::Forms::TextBox *Level10ExpTextBox;
        System::Windows::Forms::TextBox *Level9ExpTextBox;
        System::Windows::Forms::TextBox *Level3ExpTextBox;
        System::Windows::Forms::Label *label22;
        System::Windows::Forms::Label *label21;
        System::Windows::Forms::Label *label24;
        System::Windows::Forms::Label *label28;
        System::Windows::Forms::Label *label20;
        System::Windows::Forms::Label *label25;
        System::Windows::Forms::Label *label27;
        System::Windows::Forms::Label *label18;
        System::Windows::Forms::Label *label19;
        System::Windows::Forms::Label *label26;

    };
}
